소개
이전 기사에서 AI 팀에 할당 된 이후로 배운 컨텐츠를 사용하는 초밥 성분 차별기의 구현을 소개했습니다
추론 결과는 약 45%의 인식 정확도 였으므로 이번에는 모델의 정확도를 향상 시키려고 노력할 것입니다
1Data Cleansing
딥 러닝은 좋은 모델을 만들기 위해 많은 양의 훈련 데이터가 필요하지만 품질이 좋지 않은 뉴토끼 162가 포함되어 있으면 모델의 정확도가 실제로 열악 할 수 있습니다 다목적 성을 높이려면 각 범주에 대해 다른 변형의 뉴토끼 162를 갖는 것이 좋습니다 그러나 모든 것을 훈련 데이터로 사용하지 않고 고품질을 유지하면서 뉴토끼 162를 수집하는 것이 중요합니다
마지막으로, 나는 초밥 성분의 뉴토끼 162를 필사적으로 수집했지만, 수집 된 뉴토끼 162 중 일부에는 스시를 덮는 것처럼 텍스트와 삽화가 작성되어 있습니다 이것이 실제로이 초밥입니까? 그리고 누구에게나 쉽게 식별 할 수없는 뉴토끼 162도있었습니다 시간이 걸리지 만 가능한 한 정확도를 향상시키기 위해 이러한 데이터를 제거해야합니다 불필요한 데이터를 고려할 때 고려해야 할 사항은 다음과 같습니다
- 실제로 가능한 한 많이 사용되지 않는 데이터를 피하십시오
- 다른 사람들이 보더라도 판단하기 어려운 데이터를 배우지 마십시오
- 레이블이 올바른지 확인하는 것을 잊지 마십시오
2 트랜스퍼 뉴토끼 162
이것은이 기사의 주요 주제가 시작되는 곳입니다 지난번에 우리는 CNN의 기초라고 할 수있는 Lenet을 기반으로 처음부터 모델을 구현했지만 이번에는 모델 구현에 전송 뉴토끼 162을 도입하고 싶습니다
전송 뉴토끼 162은 한 필드/도메인으로 훈련 된 모델이 다른 필드/도메인에 적응되는 뉴토끼 162 방법입니다 이 이전 뉴토끼 162의 장점은 소량의 데이터로도 정확한 결과를 얻을 수있는 가능성이 가득하다는 것입니다 이번에 사용 된 모델은 종종 전송 뉴토끼 162에 사용되는 VGG16입니다 VGG16은 컨볼 루션 층과 풀링 층으로 구성된 매우 기본적인 CNN 모델이지만, 이름에서 알 수 있듯이 16 층의 층이 특징입니다 또한 1,000 개 이상의 이미지의 데이터 세트를 1,000 카테고리로 분류하는 대규모 이미지 인식 경쟁 인 ILSVRC (ImageNet 대규모 시각적 인식 챌린지)에서 높은 결과를 얻을 수있는 잘 알려진 모델입니다
이러한 모델이 전송 뉴토끼 162에 사용되는 이유와 고정밀 결과를 얻을 수있는 이유는 많은 이미지를 다수의 범주로 나누는 네트워크의 상단이 비슷한 필터이기 때문입니다 나중에 설명 할 미세 튜닝과 전송 뉴토끼 162의 차이점은 출력 레이어 이외의 층의 가중치를 변경하는지 여부입니다
*전송 뉴토끼 162은 변화없이 가중치를 사용하는 사람입니다
그것이 위와 같이 정확히 정의되어 있는지 확실하지 않지만 편의상 이번에는 다른 용어로 취급합니다
이제 구현으로 넘어 갑시다 다음과 같이 이전 기사에서 구현 된 Sushi () 함수의 내용을 간단히 변경하여 전송 뉴토끼 162을 시도 할 수 있습니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Optimizer = 'sgd' 목표 = 'CANITEORICAL_CROSSENTROPY' def Sushi(): input_tensor = 입력(모양=(행, cols, 3)) VGG16 = vgg16(include_top=거짓, 웨이트='imagenet', input_tensor=input_tensor) TOP_MODEL = 순차적() top_model.add(평평한(input_shape=VGG16.output_shape[1:])) TOP_MODEL.add(조밀 한(256, 활성화='Relu', kernel_initializer='he_normal')) TOP_MODEL.add(드롭 아웃(0.5)) top_model.add(조밀 한(10, 활성화='SoftMax')) 모델 = 모델(입력=VGG16.입력, 출력=top_model(VGG16.출력)) # 마지막 레이어까지 고정 중량 for 레이어in 모델.레이어[:15]: 레이어.훈련 가능 = 거짓 모델.요약() 모델.컴파일(손실='CANITEORICAL_CROSSENTROPY', Optimizer="SGD", 메트릭=['정확도']) return 모델 모델 = Sushi() |
모델 개요는 다음과 같습니다
이번에는 에포크 번호 (epoch)가 35이고 배치 크기 (batch_size)가 20이되고 뉴토끼 162이 이루어집니다
이번에는 GPU와 함께 Google 공동 작업 (GPU)을 사용하여 공부하는 데 약 1 시간이 걸렸습니다 과다 뉴토끼 162이 발생하지 않으며 뉴토끼 162은 순조롭게 진행되는 것으로 보입니다
추론 결과를 살펴 보겠습니다
인식 정확도는 지난 시간보다 약간 낫습니다! (45%⇒52%)
3 튜닝
방금 VGG16 모델을 사용하여 전송 뉴토끼 162 및 추론을 수행했습니다 여기서 나는 무게를 고치지 않고 VGG16의 무게를 배우지 않고 미세 조정을 시도하고 싶습니다 소스 코드 변경 중 일부는 다음을 주석으로 시도 할 수 있습니다 (위의 소스 코드의 20 ~ 21 행)
19 20 21 |
# 마지막 레이어까지 고정 중량 for 레이어in 모델.레이어[:15]: 레이어.훈련 가능 = 거짓 |
코드를 수정하고 즉시 배우게하십시오
이번에는 Epoch 번호 (Epoch)도 35로 설정하고 Batch Size (Batch_size)가 20으로 설정됩니다
오버린이 일어나는 징후는 없으며 뉴토끼 162은 순조롭게 진행되는 것 같습니다 공부하는 데 약 2 시간이 걸렸습니다 또한 훈련 손실과 검증 손실의 차이는 위의 그래프보다 좁습니다
호기심 많은 추론 결과는 어떻게 되었습니까?
전송 뉴토끼 162을 사용할 때보 다 정확도가 더욱 향상되었습니다! (52%⇒69%)
이전 기사에서 마지막으로 살펴본 뉴토끼 162를 살펴 보고이 방법의 통합이 결과에 차이를 가져 왔는지 확인합시다
*셀은 빨간색이며 올바르게 결정될 수 있습니다
스시 성분 (올바른 라벨) | 뉴토끼 162 | 판단 결과 (이전) |
판단 결과 (전송 뉴토끼 162) |
판단 결과 (미세 조정) |
오징어 |
|
태국 | 참치 | 오징어 |
Mackerel |
|
Mackerel | Mackerel | Mackerel |
Octopus |
|
오징어 | Octopus | Octopus |
Salmon |
|
Salmon | Salmon | Salmon |
Urchin |
|
Octopus | Salmon Roe | Urchin |
미세 튜닝을받은 사람은 5 개의 스시 성분을 모두 올바르게 판단했습니다!
4Conclusion
지금까지, 나는 다음 세 가지 교훈을 소개했습니다 뉴토끼 162 단계 AI 팀에 할당 된 후, 스시 성분 차별기 구현, 모델의 정확성을 향상 시켰습니까? 이미 세계에서 이미 출시 된 경우가 많았을 수도 있지만 모든 사람은 원래 데이터로 분명히 시도해야합니다!
개인적으로, 입력 할 때 배우기 어려운 많은 것들이 있기 때문에 실제로이 기사에서와 같이 배운 것들을 실제로 손에 넣어서 시도하고 출력하는 것이 중요하다고 느꼈습니다 아직 정확하지 않으므로 정확도가 더욱 향상 되고자합니다 지금까지 읽어 주셔서 감사합니다
과거 기사가 여기에 있습니다
저자 프로필

- TDI 디지털 혁신 기술 부서
- 배정 된 후, 그는 ET Robocon 2017 Tokyo Regional Tournament와 ITA Robocon 2017 승리에 Robocon 2017로 기여했습니다 현재 AI 팀의 일원으로서 저는 기계 뉴토끼 162과 심도 뉴토끼 162을 시도하고 있습니다
이 저자의 최신 기사
픽업!2022 년 1 월 4 일뉴토끼 공식 트위터 정확도는 얼마나 정확합니까? 나는 음성 뉴토끼
픽업!2021 년 5 월 14 일버전을 조심하십시오! Amazon Sagemaker의 뉴토끼 161 배포
IT 열2020 년 7 월 16 일고객 기반 관점뉴토끼 325 간주됩니까? 젊은 직원은 "Angel Dojo"를 맡았습니다 -
IT 열2020 년 6 월 29 일뉴토끼 사이트 기반 관점으로 간주됩니까? 젊은 직원들은 "Angel Dojo"를 맡았습니다 - 계획 단계